﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Belmost4PDA.Logic
{
    public class ControllerDouble:AbstractValueController
    {
        private int _numallLenght;
        private int _numfraction;
        public ControllerDouble(int numallLenght,int numfraction)
        {
            _numallLenght = numallLenght;
            _numfraction = numfraction;
        }
        public override bool Check(string Value)
        {
            /// должен вернуть true если Value это вещественное число (непрустая строка которая хорошо 
            /// парситься в numeric в базу - надо учетсть какой разделитель для дробной части именно для базы)
            /// для базы разделитель '.'
            if (Value != string.Empty)
            {
                try
                {
                    double result = double.Parse(Value.Replace('.', ',')); // это таки должен быть double
                    if(Value.IndexOf(',')!=-1)
                    {
                        // если в строке есть "," то парсинг пройдет но Это не правильный дабл
                        throw new ExceptionClass();
                        //return false;
                    }
                    // проверка на "-" и на величину целой части double
                    if (result < 0||Math.Floor(result).ToString().Length>_numallLenght-_numfraction)
                        throw new ExceptionClass();
                        //return false;
                    return true;
                }
                catch (FormatException )
                {
                    throw new ExceptionClass(); // конверт не прошел
                }
            }
            return false; // для пустой строки надо чтобы было чтото введено
        }

        public override string DefaultValue()
        {
            return "0";
        }
        public override string Normalize(string NotNormalValue)
        {
            if(NotNormalValue.LastIndexOf(',')!=-1)
            NotNormalValue = NotNormalValue.TrimEnd('0');
            NotNormalValue = NotNormalValue.TrimEnd(',');
            if (NotNormalValue == "") NotNormalValue = "0.0";
            //double NormalValue;
            //NormalValue = Convert.ToDouble(NotNormalValue);
            return NotNormalValue.Replace(',', '.');
            
        }
    }
}
